package proyecto.gestionarDatosDeCursos;

import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import proyecto.BusinessLogic.CursoBLRemote;
import util.Common;

public class ConsultarCursosAction extends Action {
	
	protected ActionForm construirListadoCursosForm(String criterio, String valor)
	throws Exception {
		
		CriterioBusquedaCursosForm form = null;
		//CursoDAOLocal cursoDAORemote = null;
		CursoBLRemote cursoBLRemote = null;
		final Context context;
		List cursos = null;
		//Integer idCurso = Integer.valueOf(id);
		
		try {	
			context = new InitialContext();					
			//cursoDAORemote = (CursoDAOLocal) context.lookup("CursoDAO/remote");
			cursoBLRemote = (CursoBLRemote) context.lookup("CursoBL/remote");
		}
		catch (NamingException e)				{
			e.printStackTrace();
			throw new RuntimeException(e);				
		}
		
		
		
		//System.out.println("criterioBusquedaForm.getCriterio(): " + criterioBusquedaForm.getCriterio());
		if (criterio.equals("1")){
			//busqueda de cursos por id
			System.out.println("Busqueda por id");
			//cursos = cursoDAORemote.findByIdList(Integer.parseInt(valor));
			cursos = cursoBLRemote.findByIdList(Integer.parseInt(valor));
			System.out.println("cantidad de cursos encontrado " + cursos.size());
			
		} else{
			//busqueda de cursos por nombre
			System.out.println("Busqueda por nombre");
			//cursos = cursoDAORemote.findByName(valor);
			cursos = cursoBLRemote.findByName(valor);
			System.out.println("cantidad de cursos encontrados " + cursos.size());
		}
		
		//construyo el form a retornar
		form = new CriterioBusquedaCursosForm();
		form.setCriterio(criterio);
		form.setCursos(cursos);
		form.setValor(valor);
		
		
		return form;
		}
	
	public ActionForward execute(
			ActionMapping mapping,
			ActionForm form,			
			HttpServletRequest request,
			HttpServletResponse response) {
						
		/*	CursoDAOLocal cursoDAORemote = null;
			final Context context;*/
					
			CriterioBusquedaCursosForm criterioBusquedaForm =
			(CriterioBusquedaCursosForm) form;			
											
			if (isCancelled(request)){				
				return mapping.findForward(Common.FAILURE);
			}
			else{			
				/*try
				{							
					context = new InitialContext();					
					cursoDAORemote = (CursoDAOLocal) context.lookup("CursoDAO/remote");
				} catch (NamingException e)				{
					e.printStackTrace();
					throw new RuntimeException(e);				
				}	
			*/
								
				/*System.out.println("criterioBusquedaForm.getCriterio(): " + criterioBusquedaForm.getCriterio());
				if (criterioBusquedaForm.getCriterio().equals("1")){
					//busqueda de cursos por id
					System.out.println("Busqueda por id");
					List cursos = cursoDAORemote.findByIdList(Integer.parseInt(criterioBusquedaForm.getValor()));					
					System.out.println("cantidad de cursos encontrado " + cursos.size());
					
				} else{
					//busqueda de cursos por nombre
					System.out.println("Busqueda por nombre");
					List cursos = cursoDAORemote.findByName(criterioBusquedaForm.getValor());
					System.out.println("cantidad de cursos encontrados " + cursos.size());
				}
				
*/				/*if ("request".equals(mapping.getScope())) {				
					request.setAttribute(mapping.getAttribute(), form);
				}	*/
				
				try {
					form = this.construirListadoCursosForm(criterioBusquedaForm.getCriterio(), criterioBusquedaForm.getValor());
									
					if ("request".equals(mapping.getScope())) {				
						request.setAttribute(mapping.getAttribute(), form);
					}				
					
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				return mapping.findForward(Common.SUCCESS);				
			}
	}
}
